home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1996 #14 / Monster Media No. 14 (April 1996) (Monster Media, Inc.).ISO / prog_d / isamexpt.zip / ISAMEXPT.PAS < prev    next >
Pascal/Delphi Source File  |  1996-01-13  |  27KB  |  867 lines

  1. unit Isamexpt;
  2.  
  3. interface
  4.  
  5. uses
  6.   SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  7.   Forms, Dialogs, StdCtrls, Buttons, ExtCtrls, Menus, ToolIntf,
  8.   ExptIntf;
  9.  
  10. type
  11.   TIsamMainForm = class(TForm)
  12.     StatusLine: TPanel;
  13.     OpenDialog1: TOpenDialog;
  14.     SaveDialog1: TSaveDialog;
  15.     Sample: TPaintBox;
  16.     Notebook1: TNotebook;
  17.     GroupBox1: TGroupBox;
  18.     CancelBttn: TBitBtn;
  19.     Rueckbttn: TBitBtn;
  20.     VorBttn: TBitBtn;
  21.     GroupBox2: TGroupBox;
  22.     EdiHauptCheck: TCheckBox;
  23.     GroupBox4: TGroupBox;
  24.     BrwHauptCheck: TCheckBox;
  25.     FileopenBttn: TSpeedButton;
  26.     GroupBox5: TGroupBox;
  27.     Label7: TLabel;
  28.     Label4: TLabel;
  29.     Edit1: TEdit;
  30.     Label3: TLabel;
  31.     SpeedButton1: TSpeedButton;
  32.     Label6: TLabel;
  33.     Edit3: TEdit;
  34.     SpeedButton3: TSpeedButton;
  35.     BrwCheck: TCheckBox;
  36.     EdiCheck: TCheckBox;
  37.     Label9: TLabel;
  38.     DirInput: TEdit;
  39.     SpeedButton4: TSpeedButton;
  40.     Label10: TLabel;
  41.     Label11: TLabel;
  42.     IniDatNamInput: TEdit;
  43.     IniBrwNamInput: TEdit;
  44.     GroupBox6: TGroupBox;
  45.     LabelNebenRadio: TRadioButton;
  46.     LabelueberRadio: TRadioButton;
  47.     GroupBox7: TGroupBox;
  48.     LenFestRadio: TRadioButton;
  49.     LenVarRadio: TRadioButton;
  50.     EdiFontLabel: TLabel;
  51.     EdiInputFontLabel: TLabel;
  52.     SpeedButton5: TSpeedButton;
  53.     SpeedButton6: TSpeedButton;
  54.     FontDialog1: TFontDialog;
  55.     SpeedButton7: TSpeedButton;
  56.     LboxFontLabel: TLabel;
  57.     Memo1: TMemo;
  58.     GroupBox9: TGroupBox;
  59.     Memo2: TMemo;
  60.     GroupBox10: TGroupBox;
  61.     Memo3: TMemo;
  62.     Label2: TLabel;
  63.     TableNameInput: TEdit;
  64.     HelpBttn: TBitBtn;
  65.     SprachBttn: TBitBtn;
  66.     DateiBttn: TSpeedButton;
  67.     OpenDialog2: TOpenDialog;
  68.     EditorFormNameInput: TEdit;
  69.     BrwFormNameInput: TEdit;
  70.     Label1: TLabel;
  71.     DBaseExpCheck: TCheckBox;
  72.     DBaseImpCheck: TCheckBox;
  73.     DBStruEdit: TEdit;
  74.     Label5: TLabel;
  75.     DBStruBttn: TSpeedButton;
  76.     procedure FormCreate(Sender: TObject);
  77.     procedure ShowHint(Sender: TObject);
  78.     procedure FileopenBttnClick(Sender: TObject);
  79.     procedure EndeBttnClick(Sender: TObject);
  80.     procedure FormDestroy(Sender: TObject);
  81.     procedure SamplePaint(Sender: TObject);
  82.     procedure EdiCheckClick(Sender: TObject);
  83.     procedure CancelBttnClick(Sender: TObject);
  84.     procedure RueckbttnClick(Sender: TObject);
  85.     procedure VorBttnClick(Sender: TObject);
  86.     procedure EdiHauptCheckClick(Sender: TObject);
  87.     procedure BrwHauptCheckClick(Sender: TObject);
  88.     procedure SpeedButton1Click(Sender: TObject);
  89.     procedure SpeedButton3Click(Sender: TObject);
  90.     procedure SpeedButton4Click(Sender: TObject);
  91.     procedure SpeedButton5Click(Sender: TObject);
  92.     procedure SpeedButton6Click(Sender: TObject);
  93.     procedure SpeedButton7Click(Sender: TObject);
  94.     procedure Memo1Exit(Sender: TObject);
  95.     procedure HelpBttnClick(Sender: TObject);
  96.     procedure FormKeyDown(Sender: TObject; var Key: Word;
  97.       Shift: TShiftState);
  98.     procedure FormShow(Sender: TObject);
  99.     procedure SprachBttnClick(Sender: TObject);
  100.     procedure DateiBttnClick(Sender: TObject);
  101.     procedure Edit1Exit(Sender: TObject);
  102.     procedure Edit3Exit(Sender: TObject);
  103.     procedure EditorFormNameInputExit(Sender: TObject);
  104.     procedure BrwFormNameInputExit(Sender: TObject);
  105.     procedure TableNameInputExit(Sender: TObject);
  106.     procedure DirInputExit(Sender: TObject);
  107.     procedure DBaseExpCheckClick(Sender: TObject);
  108.     procedure DBaseImpCheckClick(Sender: TObject);
  109.     procedure DBStruEditExit(Sender: TObject);
  110.     procedure DBStruBttnClick(Sender: TObject);
  111.     procedure FormKeyPress(Sender: TObject; var Key: Char);
  112.     Private
  113.     DrawBitmap: TBitmap;
  114.     RecList,KeyList,IIDList: TStringList;
  115.     Sprache: Integer;
  116.     Procedure CheckButtons;
  117.     function DoFormCreation(const FormIdent: string): TForm;
  118.     function CreateEditorSource(const UnitIdent, FormIdent: string): TMemoryStream;
  119.     function CreateEditorForm(const FormIdent: string): TMemoryStream;
  120.     function DoBrwFormCreation(const FormIdent: string): TForm;
  121.     function CreateBrowserForm(const FormIdent: string): TMemoryStream;
  122.     function CreateBrowserSource(const UnitIdent, FormIdent,
  123.                    EdiUnitIdent, EdiFormIdent: string): TMemoryStream;
  124.     function CreateStru(Const FormIdent: String): TMemoryStream;
  125.     Procedure Update_Listen(i: Integer);
  126.     Procedure Setze_Sprache(S: Integer);
  127.   end;
  128.  
  129.   TIsamDialogExpert = class(TIExpert)
  130.   public  { Methods required by Delphi to define the expert }
  131.     function GetName: string; override;
  132.     function GetComment: string; override;
  133.     function GetGlyph: HBITMAP; override;
  134.     function GetStyle: TExpertStyle; override;
  135.     function GetState: TExpertState; override;
  136.     function GetIDString: string; override;
  137.     procedure Execute; override;
  138.   public
  139.   private
  140.   end;
  141.  
  142. procedure Register;
  143.           
  144. implementation
  145.  
  146. Uses Proxies, IStreams, DirAusw, UToolDll,
  147.      WntIsam1, WntIsam2, WntIsam3, WntIsam4,
  148.      VirtIntf, Inifiles;
  149.  
  150. {$R *.DFM}
  151. {$R EXPTISAM.RES}
  152.  
  153. procedure Register;
  154. begin
  155.   RegisterLibraryExpert(TIsamDialogExpert.Create);
  156. end;
  157.  
  158. procedure HandleException;
  159. begin
  160.   ToolServices.RaiseException(ReleaseException);
  161. end;
  162.  
  163. procedure WntvIsamDialogExpert(ToolServices: TIToolServices);
  164. var
  165.   D: TIsamMainForm;
  166.   ISourceStream, IFormStream, IStruStream: TIMemoryStream;
  167.   UnitIdent, FormIdent, BrwIdent: string[79];
  168.   BrwUnitIdent, BrwFileName, StruIdent: String;
  169.   UZahl,Code: Integer;
  170.   StruFileName,UStr, Dir: String;
  171.   FileName: TFileName;
  172.   IniFile : TIniFile;
  173. begin
  174.   if ToolServices = nil then Exit;
  175.   if ToolServices.GetNewModuleName(UnitIdent, FileName) then
  176.   begin
  177.     D := TIsamMainForm.Create(Application);
  178.     try
  179.       D.Edit1.Text:= '';
  180.       D.Edit3.Text:= '';
  181.       Inifile:= TIniFile.Create('ISAMEXPT.INI');
  182.       Dir:= IniFile.ReadString('EXPERT','PATH','');
  183.       D.Sprache:= IniFile.ReadInteger('EXPERT','LANGUAGE',0);
  184.       IniFile.Free;
  185.       D.DirInput.Text:= Dir;
  186.       if D.ShowModal = mrOK then begin
  187.         Dir:= D.DirInput.Text;
  188.         Inifile:= TIniFile.Create('ISAMEXPT.INI');
  189.         IniFile.WriteString('EXPERT','PATH',Dir);
  190.         IniFile.WriteInteger('EXPERT','LANGUAGE',D.Sprache);
  191.         IniFile.Free;
  192.         UnitIdent:= D.Edit1.Text;
  193.         if Pos('.',UnitIdent) > 0 then UnitIdent:= Copy(UnitIdent,1,Pos('.',UnitIdent)-1);
  194.         FormIdent:= D.EditorFormNameInput.Text;
  195.         if Pos('.',FormIdent) > 0 then FormIdent:= Copy(FormIdent,1,Pos('.',FormIdent)-1);
  196.         BrwUnitIdent:= D.Edit3.Text;
  197.         BrwIdent := D.BrwFormNameInput.Text;
  198.         FileName:= Dir + UnitIdent + '.PAS';
  199.         BrwFileName:= Dir + BrwUnitIdent + '.PAS';
  200.         if D.BrwCheck.Checked then begin
  201.           IFormStream := TIMemoryStream.Create(D.CreateBrowserForm(BrwIdent));
  202.           try
  203.             ISourceStream := TIMemoryStream.Create(D.CreateBrowserSource(BrwUnitIdent, BrwIdent,
  204.                                                                          UnitIdent, FormIdent));
  205.             try
  206.               ToolServices.CreateModule(BrwFileName, ISourceStream, IFormStream,
  207.                 [cmAddToProject, cmShowSource, cmShowForm, cmUnNamed,
  208.                 cmMarkModified]);
  209.             finally
  210.               ISourceStream.OwnStream := True;
  211.               ISourceStream.Free;
  212.             end;
  213.           finally
  214.             IFormStream.OwnStream := True;
  215.             IFormStream.Free;
  216.           end;
  217.         end;
  218.         if D.EdiCheck.Checked then begin
  219.           IFormStream := TIMemoryStream.Create(D.CreateEditorForm(FormIdent));
  220.           try
  221.             ISourceStream := TIMemoryStream.Create(D.CreateEditorSource(UnitIdent, FormIdent));
  222.             try
  223.               ToolServices.CreateModule(FileName, ISourceStream, IFormStream,
  224.                 [cmAddToProject, cmShowSource, cmShowForm, cmUnNamed,
  225.                 cmMarkModified]);
  226.             finally
  227.               ISourceStream.OwnStream := True;
  228.               ISourceStream.Free;
  229.             end;
  230.           finally
  231.             IFormStream.OwnStream := True;
  232.             IFormStream.Free;
  233.           end;
  234.         end;
  235.         if (D.DBaseExpCheck.Checked) or (D.DbaseImpCheck.Checked) then begin
  236.           StruIdent:= D.DBStruEdit.Text;
  237.           if Pos('.',StruIdent) > 0 then StruIdent:= Copy(StruIdent,1,Pos('.',StruIdent)-1);
  238.           StruFileName:= Dir + StruIdent + '.PAS';
  239.           IStruStream := TIMemoryStream.Create(D.CreateStru(StruIdent));
  240.           try
  241.             ToolServices.CreateModule(StruFileName, IStruStream, NIL,
  242.               [cmAddToProject, cmShowSource, cmUnNamed, cmMarkModified]);
  243.           finally
  244.             IStruStream.OwnStream := True;
  245.             IStruStream.Free;
  246.           end;
  247.         end;
  248.       end;
  249.     finally
  250.       D.Free;
  251.     end;
  252.   end;
  253. end;
  254.  
  255. { tIsamDialogExpert }
  256. function tIsamDialogExpert.GetName: string;
  257. begin
  258.   try
  259.     Result := 'ISAM_Expert';
  260.   except
  261.     HandleException;
  262.   end;
  263. end;
  264.  
  265. function tIsamDialogExpert.GetComment: string;
  266. begin
  267.   try
  268.     Result := 'ISAM-Dialogexperte';
  269.   except
  270.     HandleException;
  271.   end;
  272. end;
  273.  
  274. function tIsamDialogExpert.GetGlyph: HBITMAP;
  275. begin
  276.   try
  277.     Result := LoadBitmap(HInstance, 'IS_EXPT');
  278.   except
  279.     HandleException;
  280.   end;
  281. end;
  282.  
  283. function tIsamDialogExpert.GetStyle: TExpertStyle;
  284. begin
  285.   try
  286.     Result := esForm;
  287.   except
  288.     HandleException;
  289.   end;
  290. end;
  291.  
  292. function tIsamDialogExpert.GetState: TExpertState;
  293. begin
  294.   try
  295.     Result := [esEnabled];
  296.   except
  297.     HandleException;
  298.   end;
  299. end;
  300.  
  301. function tIsamDialogExpert.GetIDString: string;
  302. begin
  303.   try
  304.     Result := 'ISAM_Expert';
  305.   except
  306.     HandleException;
  307.   end;
  308. end;
  309.  
  310. procedure tIsamDialogExpert.Execute;
  311. begin
  312.   try
  313.     WntvIsamDialogExpert(ToolServices);
  314.   except
  315.     HandleException;
  316.   end;
  317. end;
  318.  
  319. procedure TIsamMainForm.FormCreate(Sender: TObject);
  320. begin
  321.   DrawBitmap := TBitmap.Create;
  322.   Application.OnHint := ShowHint;
  323.   CheckButtons;
  324.   RecList:= TStringList.Create;
  325.   KeyList:= TStringList.Create;
  326.   IIDList:= TStringList.Create;
  327.   Sprache:= 0;
  328. end;
  329.  
  330. procedure TIsamMainForm.ShowHint(Sender: TObject);
  331. begin
  332.   StatusLine.Caption := Application.Hint;
  333. end;
  334.  
  335. Procedure TIsamMainForm.CheckButtons;
  336. var i: Integer;
  337. begin
  338.   i:= Notebook1.PageIndex;
  339.   RueckBttn.Enabled:= I > 0;
  340.   if I = 0 then VorBttn.Enabled:= (Memo1.Lines.Count > 0)
  341.   else if I = 1 then VorBttn.Enabled:= (Memo2.Lines.Count > 0) and (Memo3.Lines.Count > 0)
  342.   else if I = 4 then VorBttn.Enabled:= (DBStruEdit.Text <> '')
  343.                                        or ((DBaseExpCheck.Checked = False) and (DBaseImpCheck.Checked = False))
  344.   else
  345.     VorBttn.Enabled:= (DirInput.Text <> '') and
  346.     (((EdiCheck.Checked) and (Edit1.Text <> '') and (EditorFormNameInput.Text <> '')) or (EdiCheck.Checked = False)) and
  347.     (((BrwCheck.Checked) and (Edit3.Text <> '') and (BrwFormNameInput.Text <> '')) or (BrwCheck.Checked = False)) and
  348.     ((BrwCheck.Checked) or (EdiCheck.Checked));
  349.   if VorBttn.Enabled then begin
  350.     if I = 4 then VorBttn.Caption:= '&Create'
  351.     else begin
  352.       if Sprache = 1 then Vorbttn.Caption:= '&Forward'
  353.       else VorBttn.Caption:= '&Weiter';
  354.     end;
  355.   end;
  356. end;
  357.  
  358. procedure TIsamMainForm.FileopenBttnClick(Sender: TObject);
  359. var DatNam: String;
  360.     TypDatei:  TextFile;
  361.     RecEinlesen,KeyEinlesen: Boolean;
  362.     TypText,TText : String;
  363. begin
  364.   if OpenDialog1.Execute then begin
  365.     DatNam:= OpenDialog1.FileName;
  366.     Memo1.Lines.Clear;
  367.     KeyList.Clear;
  368.     IIDList.Clear;
  369.     AssignFile(TypDatei,DatNam);
  370.     Reset(TypDatei);
  371.     RecEinlesen:= False;
  372.     KeyEinlesen:= False;
  373.     Repeat
  374.       ReadLn(TypDatei,TypText);
  375.       TText:= UpperCase(TypText);
  376.       Strip(TText);
  377.       if (Pos('TYPE',TText) > 0) or (Pos('=RECORD',TText) > 0) then RecEinlesen:= True;
  378.       if (Pos('KEYBEGIN',TText) > 0) then KeyEinlesen:= True;
  379.       if RecEinlesen then Memo1.Lines.Add(TypText);
  380.       if KeyEinlesen then KeyList.Add(TypText);
  381.       if Pos('END;',TText) > 0 then RecEinlesen:= False;
  382.       if Pos('KEYEND',TText) > 0 then KeyEinlesen:= False;
  383.     Until (Eof(TypDatei));
  384.     CloseFile(TypDatei);
  385.     If Memo1.Lines.Count < 1 then begin
  386.       if Sprache = 1 then ErrorWindow('TYP-File has not the expected format','')
  387.       else Errorwindow('Typ-Datei hat das falsche Format','');
  388.     end;
  389.   end;
  390.   CheckButtons;
  391. end;
  392.  
  393. procedure TIsamMainForm.EndeBttnClick(Sender: TObject);
  394. begin
  395.   Close;
  396. end;
  397.  
  398. procedure TIsamMainForm.FormDestroy(Sender: TObject);
  399. begin
  400.   RecList.Free;
  401.   IIDList.Free;
  402.   KeyList.Free;
  403.   DrawBitmap.Free;
  404. end;
  405.  
  406. procedure TIsamMainForm.SamplePaint(Sender: TObject);
  407. var X, Y: Integer;
  408. begin
  409.   DrawBitmap.Handle := LoadBitmap(HInstance, 'DIALOG');
  410.   Sample.Canvas.Draw(0, 0, DrawBitmap);
  411. end;
  412.  
  413. function TIsamMainForm.DoFormCreation(const FormIdent: string): TForm;
  414. begin
  415.   DoFormCreation:= Erzeuge_EditorForm(FormIdent,RecList,
  416.                                       LabelNebenRadio.Checked,
  417.                                       LenFestRadio.Checked,
  418.                                       EdiFontLabel.Font,
  419.                                       EdiInputFontLabel.Font,
  420.                                       Sprache);
  421. end;
  422.  
  423. function TIsamMainForm.CreateEditorSource(const UnitIdent, FormIdent: string): TMemoryStream;
  424. begin
  425.   CreateEditorSource:= Erzeuge_EditorSource(UnitIdent, FormIdent,
  426.                                       RecList, KeyList,
  427.                                       Sprache);
  428. end;
  429.  
  430. function TIsamMainForm.CreateEditorForm(const FormIdent: string): TMemoryStream;
  431. var DlgForm: TForm;
  432. begin
  433.   Result := nil;
  434.   DlgForm := DoFormCreation(FormIdent);
  435.   try
  436.     Result := TMemoryStream.Create;
  437.     Result.WriteComponentRes(FormIdent, DlgForm);
  438.     Result.Position := 0;
  439.   finally
  440.     DlgForm.Free;
  441.   end;
  442. end;
  443.  
  444. function TIsamMainForm.DoBrwFormCreation(const FormIdent: string): TForm;
  445. var TblNam: String;
  446. begin
  447.   TblNam:= TableNameInput.Text;
  448.   if Pos('.',TblNam) > 0 then TblNam:= Copy(TblNam,1,Pos('.',TblNam)-1);
  449.   DoBrwFormCreation:= Erzeuge_BrowserForm(FormIdent,
  450.                                           TblNam,
  451.                                           IniDatNamInput.Text,
  452.                                           IniBrwNamInput.Text,
  453.                                           LboxFontLabel.Font,
  454.                                           IIDList,KeyList,RecList,
  455.                                           DbaseExpCheck.Checked,
  456.                                           DBaseImpCheck.Checked,
  457.                                           Sprache);
  458. end;
  459.  
  460. function TIsamMainForm.CreateBrowserForm(const FormIdent: string): TMemoryStream;
  461. var DlgForm: TForm;
  462. begin
  463.   Result := nil;
  464.   DlgForm := DoBrwFormCreation(FormIdent);
  465.   try
  466.     Result := TMemoryStream.Create;
  467.     Result.WriteComponentRes(FormIdent, DlgForm);
  468.     Result.Position := 0;
  469.   finally
  470.     DlgForm.Free;
  471.   end;
  472. end;
  473.  
  474. function TIsamMainForm.CreateBrowserSource(const UnitIdent, FormIdent,
  475.   EdiUnitIdent, EdiFormIdent: string): TMemoryStream;
  476. begin
  477.   CreateBrowserSource:= Erzeuge_BrowserSource(UnitIdent, FormIdent,
  478.                                    EdiUnitIdent, EdiFormIdent,
  479.                                    BrwHauptCheck.Checked,
  480.                                    RecList,KeyList,IIDList,
  481.                                    DbaseExpCheck.Checked,
  482.                                    DBaseImpCheck.Checked,
  483.                                    DBStruEdit.Text,Sprache);
  484. end;
  485.  
  486. function TIsamMainForm.CreateStru(Const FormIdent: String): TMemoryStream;
  487. begin
  488.   CreateStru:= Erzeuge_Struktur(FormIdent,RecList,KeyList);
  489. end;
  490.  
  491. procedure TIsamMainForm.EdiCheckClick(Sender: TObject);
  492. begin
  493.   CheckButtons;
  494. end;
  495.  
  496. procedure TIsamMainForm.CancelBttnClick(Sender: TObject);
  497. begin
  498.   ModalResult:= mrCancel;
  499. end;
  500.  
  501. procedure TIsamMainForm.RueckbttnClick(Sender: TObject);
  502. var i: Integer;
  503. begin
  504.   i:= Notebook1.PageIndex;
  505.   Case I of
  506.     5: i:= 4;
  507.     4: i:= 3;
  508.     3: i:= 2;
  509.     2: begin
  510.          Update_Listen(2);
  511.          I:= 1;
  512.        end;
  513.     1: begin
  514.          Update_Listen(1);
  515.          i:= 0;
  516.        end;
  517.     else i:= 0;
  518.   end;
  519.   Notebook1.PageIndex:= i;
  520.   CheckButtons;
  521. end;
  522.  
  523. Procedure TIsamMainForm.Update_Listen(i: Integer);
  524. var L,x,IdxAnzahl,Code: Integer;
  525.     ListText,LText,IStr,LStr,KStr: String;
  526. begin
  527.   Case i of
  528.     0: begin
  529.          RecList.Clear;
  530.          if Memo1.Lines.Count > 0 then begin
  531.            For x:= 0 to Memo1.Lines.Count-1 do RecList.Add(Memo1.Lines[x]);
  532.          end;
  533.          Memo2.Lines.Clear;
  534.          IIDList.Clear;
  535.          if KeyList.Count > 0 then begin
  536.            IdxAnzahl:= 0;
  537.            For x:= 0 to KeyList.Count-1 do begin
  538.              ListText:= KeyList[x];
  539.              LText:= Uppercase(ListText);
  540.              Strip(LText);
  541.              Memo2.Lines.Add(Listtext);
  542.              if Pos('KEYNO=',LText) > 0 then begin
  543.                Inc(IdxAnzahl);
  544.                Str(IdxAnzahl,IStr);
  545.                L:= 0;
  546.                if Pos('KEYLEN',LText) > 0 then begin
  547.                  LStr:= LText;
  548.                  Delete(LStr,1,Pos('KEYLEN',LStr)+6);
  549.                  if LStr[1] = '=' then Delete(LStr,1,1);
  550.                  if Pos('}',LStr) > 0 then begin
  551.                    LStr:= Copy(LStr,1,Pos('}',LStr)-1);
  552.                    Val(LStr,L,Code);
  553.                  end;
  554.                end;
  555.                Str(L,LStr);
  556.                if Pos('TRUE',LText) > 0 then IIDList.Add('IID['+IStr+'].KeyL:= '+LStr+'; IID['+IStr+'].AllowDupK:= TRUE;')
  557.                else IIDList.Add('IID['+IStr+'].KeyL:= '+LStr+'; IID['+IStr+'].AllowDupK:= FALSE;');
  558.              end;
  559.            end;
  560.          end
  561.          else Memo2.Lines.Add('F(Feldname,0);');
  562.          Memo3.Lines.Clear;
  563.          if IIDList.Count > 0 then begin
  564.            For x:= 0 to IIDList.Count-1 do Memo3.Lines.Add(IIDList[x]);
  565.          end
  566.          else Memo3.Lines.Add('IID[1].KeyL:= 0; IID[1].AllowDupK:= FALSE;');
  567.        end;
  568.     1: begin
  569.          KeyList.Clear;
  570.          if Memo2.Lines.Count > 0 then begin
  571.            For x:= 0 to Memo2.Lines.Count-1 do begin
  572.              KStr:= Memo2.Lines[x];
  573.              if (Pos('S:=',KStr) = 0)
  574.              and (Pos('KEY BEGIN',KStr) = 0)
  575.              and (Pos('KEY END',KStr) = 0) then KStr:= 'S:='+KStr;
  576.              KeyList.Add(KStr);
  577.            end;
  578.          end;
  579.          IIDList.Clear;
  580.          if Memo3.Lines.Count > 0 then begin
  581.            For x:= 0 to Memo3.Lines.Count-1 do IIDList.Add(Memo3.Lines[x]);
  582.          end;
  583.        end;
  584.   end;
  585. end;
  586.  
  587. procedure TIsamMainForm.VorBttnClick(Sender: TObject);
  588. var i: Integer;
  589. begin
  590.   i:= Notebook1.PageIndex;
  591.   Case i of
  592.     0: begin
  593.          Update_Listen(0);
  594.          I:= 1;
  595.        end;
  596.     1: begin
  597.          Update_Listen(1);
  598.          i:= 2;
  599.        end;
  600.     2: i:= 3;
  601.     3: i:= 4;
  602.     4: ModalResult:= mrOk;
  603.   end;
  604.   Notebook1.PageIndex:= i;
  605.   CheckButtons;
  606. end;
  607.  
  608. procedure TIsamMainForm.EdiHauptCheckClick(Sender: TObject);
  609. begin
  610.   if EdiHauptCheck.Checked then BrwHauptCheck.Checked:= False;
  611. end;
  612.  
  613. procedure TIsamMainForm.BrwHauptCheckClick(Sender: TObject);
  614. begin
  615.   if BrwHauptCheck.Checked then EdiHauptCheck.Checked:= False;
  616. end;
  617.  
  618. procedure TIsamMainForm.SpeedButton1Click(Sender: TObject);
  619. var Txt: String;
  620. begin
  621.   if SaveDialog1.Execute then begin
  622.     Txt:= SaveDialog1.FileName;
  623.     While Pos('\',Txt) > 0 do Delete(Txt,1,Pos('\',Txt));
  624.     if Pos('.',Txt) > 0 then Txt:= Copy(Txt,1,Pos('.',Txt)-1);
  625.     Edit1.Text:= Txt;
  626.     if EditorFormNameInput.Text = '' then begin
  627.       EditorFormNameInput.Text:= Txt + 'Dialog';
  628.     end;
  629.   end;
  630.   CheckButtons;
  631. end;
  632.  
  633. procedure TIsamMainForm.SpeedButton3Click(Sender: TObject);
  634. var Txt: String;
  635. begin
  636.   if SaveDialog1.Execute then begin
  637.     Txt:= SaveDialog1.FileName;
  638.     While Pos('\',Txt) > 0 do Delete(Txt,1,Pos('\',Txt));
  639.     if Pos('.',Txt) > 0 then Txt:= Copy(Txt,1,Pos('.',Txt)-1);
  640.     Edit3.Text:= Txt;
  641.     if BrwFormNameInput.Text = '' then begin
  642.       BrwFormNameInput.Text:= Txt + 'Dialog';
  643.     end;
  644.   end;
  645.   CheckButtons;
  646. end;
  647.  
  648. procedure TIsamMainForm.SpeedButton4Click(Sender: TObject);
  649. begin
  650.   DirAuswahlDlg:= TDirAuswahlDlg.Create(Self);
  651.   Try
  652.     if Sprache = 1 then DirAuswahlDlg.Caption:= 'Select path';
  653.     if DirAuswahlDlg.ShowModal = mrOk then
  654.     DirInput.Text:= DirAuswahlDlg.DirectoryListbox1.Directory+'\';
  655.   Finally
  656.     DirauswahlDlg.Free;
  657.   end;
  658.   CheckButtons;
  659. end;
  660.  
  661. procedure TIsamMainForm.SpeedButton5Click(Sender: TObject);
  662. begin
  663.   if FontDialog1.Execute then EdiFontLabel.Font:= FontDialog1.Font;
  664. end;
  665.  
  666. procedure TIsamMainForm.SpeedButton6Click(Sender: TObject);
  667. begin
  668.   if FontDialog1.Execute then EdiInputFontLabel.Font:= FontDialog1.Font;
  669. end;
  670.  
  671. procedure TIsamMainForm.SpeedButton7Click(Sender: TObject);
  672. begin
  673.   if FontDialog1.Execute then LboxFontLabel.Font:= FontDialog1.Font;
  674. end;
  675.  
  676. procedure TIsamMainForm.Memo1Exit(Sender: TObject);
  677. begin
  678.   CheckButtons;
  679. end;
  680.  
  681. procedure TIsamMainForm.HelpBttnClick(Sender: TObject);
  682. begin
  683.   if Sprache = 1 then Application.HelpFile:= 'EXPTISAE.HLP'
  684.   else Application.HelpFile := 'EXPTISAM.HLP';
  685.   Application.HelpCommand(HELP_CONTENTS, 0);
  686. end;
  687.  
  688. procedure TIsamMainForm.FormKeyDown(Sender: TObject; var Key: Word;
  689.   Shift: TShiftState);
  690. begin
  691.   if Key = vk_F1 then HelpBttnClick(Sender);
  692. end;
  693.  
  694. Procedure TIsamMainForm.Setze_Sprache(S: Integer);
  695. begin
  696.   Case Sprache of
  697.     1: begin
  698.          CancelBttn.Caption:= '&Cancel';
  699.          CancelBttn.Hint:= 'Cancel';
  700.          Rueckbttn.Caption:= '&Back';
  701.          RueckBttn.Hint:= 'Back';
  702.          VorBttn.Caption:= '&Forward';
  703.          VorBttn.Hint:= 'Forward';
  704.          GroupBox2.Caption:= 'Editor Options';
  705.          EdiHauptCheck.Caption:= 'Editor as main window';
  706.          GroupBox4.Caption:= 'Browser Options';
  707.          BrwHauptCheck.Caption:= 'Browser as main window';
  708.          FileopenBttn.Hint:= 'Load file *.TYP';
  709.          GroupBox5.Caption:= 'Path and Filenames';
  710.          Label7.Caption:= 'Filename (without EXT)';
  711.          Label3.Caption:= 'create';
  712.          SpeedButton1.Hint:= 'Select Editor-FileName';
  713.          SpeedButton3.Hint:= 'Select Browser-FileName';
  714.          Label9.Caption:= 'Path-Name';
  715.          SpeedButton4.Hint:= 'Select path';
  716.          Label10.Caption:= 'INI-Filename';
  717.          Label11.Caption:= 'INI-Browsername';
  718.          GroupBox6.Caption:= 'Labels and Inputlines';
  719.          LabelNebenRadio.Caption:= 'side by side';
  720.          LabelueberRadio.Caption:= 'beneath';
  721.          GroupBox7.Caption:= 'Input-length';
  722.          LenFestRadio.Caption:= 'fixed';
  723.          LenVarRadio.Caption:= 'variable';
  724.          SpeedButton5.Hint:= 'Select Label-Font';
  725.          SpeedButton6.Hint:= 'Select Input-Font';
  726.          SpeedButton7.Hint:= 'Select Browser-Font';
  727.          Label2.Caption:= 'Table';
  728.          HelpBttn.Caption:= '&Help';
  729.          HelpBttn.Hint:= 'Help';
  730.          SprachBttn.Caption:= '&German';
  731.          SprachBttn.Hint:= 'Deutsche Sprache auswΣhlen';
  732.          DateiBttn.Hint:= 'Select ISAM-table';
  733.          DbStruBttn.Hint:= 'filename of the DBASE-structure file';
  734.        end;
  735.     else begin
  736.          CancelBttn.Caption:= 'Abbruch';
  737.          CancelBttn.Hint:= 'Abbruch';
  738.          Rueckbttn.Caption:= '&Zurⁿck';
  739.          RueckBttn.Hint:= 'Zurⁿck';
  740.          VorBttn.Caption:= '&Weiter';
  741.          VorBttn.Hint:= 'Weiter';
  742.          GroupBox2.Caption:= 'Editor Einstellungen';
  743.          EdiHauptCheck.Caption:= 'Editor als Hauptfenster';
  744.          GroupBox4.Caption:= 'Browser Einstellungen';
  745.          BrwHauptCheck.Caption:= 'Browser als Hauptfenster';
  746.          FileopenBttn.Hint:= 'TYP-Datei laden';
  747.          GroupBox5.Caption:= 'Pfad and Dateinamen';
  748.          Label7.Caption:= 'Dateiname (ohne EXT)';
  749.          Label3.Caption:= 'erzeugen';
  750.          SpeedButton1.Hint:= 'Editor-Sourcefilenamen auswΣhlen';
  751.          SpeedButton3.Hint:= 'Browser-Sourcefilenamen auswΣhlen';
  752.          Label9.Caption:= 'Ziel-Verzeichnis';
  753.          SpeedButton4.Hint:= 'Pfad auswΣhlen';
  754.          Label10.Caption:= 'INI-Dateiname';
  755.          Label11.Caption:= 'INI-Browsername';
  756.          GroupBox6.Caption:= 'Labels und Inputlines';
  757.          LabelNebenRadio.Caption:= 'nebeneinander';
  758.          LabelueberRadio.Caption:= 'untereinander';
  759.          GroupBox7.Caption:= 'Input-LΣnge';
  760.          LenFestRadio.Caption:= 'fest';
  761.          LenVarRadio.Caption:= 'variabel';
  762.          SpeedButton5.Hint:= 'Label-Font auswΣhlen';
  763.          SpeedButton6.Hint:= 'Input-Font auswΣhlen';
  764.          SpeedButton7.Hint:= 'Browser-Font auswΣhlen';
  765.          Label2.Caption:= 'Tabelle';
  766.          HelpBttn.Caption:= '&Hilfe';
  767.          HelpBttn.Hint:= 'Help';
  768.          SprachBttn.Caption:= '&English';
  769.          SprachBttn.Hint:= 'Select english language';
  770.          DateiBttn.Hint:= 'Isam-Tabelle auswΣhlen';
  771.          DbStruBttn.Hint:= 'Filename der DBASE-Struktur-Datei';
  772.        end;
  773.   end;
  774. end;
  775.  
  776. procedure TIsamMainForm.FormShow(Sender: TObject);
  777. begin
  778.   if Sprache <> 0 then Setze_Sprache(Sprache);
  779. end;
  780.  
  781. procedure TIsamMainForm.SprachBttnClick(Sender: TObject);
  782. begin
  783.   if Sprache = 0 then Sprache:= 1 else Sprache:= 0;
  784.   Setze_Sprache(Sprache);
  785. end;
  786.  
  787. procedure TIsamMainForm.DateiBttnClick(Sender: TObject);
  788. begin
  789.   if OpenDialog2.Execute then begin
  790.     TableNameInput.Text:= OpenDialog2.FileName;
  791.   end;
  792.   CheckButtons;
  793. end;
  794.    
  795. procedure TIsamMainForm.Edit1Exit(Sender: TObject);
  796. begin
  797.   if EditorFormNameInput.Text = '' then begin
  798.     EditorFormNameInput.Text:= Edit1.Text + 'Dialog';
  799.   end;
  800.   CheckButtons;
  801. end;
  802.  
  803. procedure TIsamMainForm.Edit3Exit(Sender: TObject);
  804. begin
  805.   if BrwFormNameInput.Text = '' then begin
  806.     BrwFormNameInput.Text:= Edit3.Text + 'Dialog';
  807.   end;
  808.   CheckButtons;
  809. end;
  810.  
  811. procedure TIsamMainForm.EditorFormNameInputExit(Sender: TObject);
  812. begin
  813.   CheckButtons;
  814. end;
  815.  
  816. procedure TIsamMainForm.BrwFormNameInputExit(Sender: TObject);
  817. begin
  818.   CheckButtons;
  819. end;
  820.  
  821. procedure TIsamMainForm.TableNameInputExit(Sender: TObject);
  822. begin
  823.   CheckButtons;
  824. end;
  825.  
  826. procedure TIsamMainForm.DirInputExit(Sender: TObject);
  827. begin
  828.   CheckButtons;
  829. end;
  830.  
  831. procedure TIsamMainForm.DBaseExpCheckClick(Sender: TObject);
  832. begin
  833.   CheckButtons;
  834. end;
  835.  
  836. procedure TIsamMainForm.DBaseImpCheckClick(Sender: TObject);
  837. begin
  838.   CheckButtons;
  839. end;
  840.  
  841. procedure TIsamMainForm.DBStruEditExit(Sender: TObject);
  842. begin
  843.   CheckButtons;
  844. end;
  845.  
  846. procedure TIsamMainForm.DBStruBttnClick(Sender: TObject);
  847. var Txt: String;
  848. begin
  849.   if SaveDialog1.Execute then begin
  850.     Txt:= SaveDialog1.FileName;
  851.     While Pos('\',Txt) > 0 do Delete(Txt,1,Pos('\',Txt));
  852.     if Pos('.',Txt) > 0 then Txt:= Copy(Txt,1,Pos('.',Txt)-1);
  853.     DBStruEdit.Text:= Txt;
  854.   end;
  855.   CheckButtons;
  856. end;
  857.  
  858. procedure TIsamMainForm.FormKeyPress(Sender: TObject; var Key: Char);
  859. begin
  860.   if Key = #13 then begin
  861.     Key := #0;
  862.     Perform(WM_NEXTDLGCTL, 0, 0);
  863.   end;
  864. end;
  865.  
  866. end.
  867.